/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package proyectoexcel;
import java.io.*;
import java.util.Vector;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
/**
 *
 * @author samara
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {

        /*ParamConexion paramConexion=new ParamConexion();
        paramConexion.User="postgres";
        paramConexion.DatabaseName="CoordBD";
        paramConexion.Password="123456";
        Conexion.crearConexion(paramConexion);
        */
        Interf.generar();
        while(true) {
            Interf.aceptar.setActionCommand("CLICK");
        InputStream inp;

            String pathname = "";
            while (!pathname.endsWith(".xls")) {
                    while(!Interf.accepted().equals("ACEPTADO")) {
                        pathname=Interf.pathname();
                    }
            }
            inp = new FileInputStream(pathname);
            Workbook wb;

                wb = WorkbookFactory.create(inp);
                Sheet sheet = wb.getSheetAt(0);
                int numRows=sheet.getPhysicalNumberOfRows();
                
                //FileWriter fstream = new FileWriter("Promedios materia - "+pathname+".txt");
                FileWriter fstream = new FileWriter("Promedios materia.txt");
                BufferedWriter out = new BufferedWriter(fstream);            
                //FileWriter fstream2 = new FileWriter("Promedios departamento - "+pathname+".txt");
                FileWriter fstream2 = new FileWriter("Promedios departamento.txt");
                BufferedWriter out2 = new BufferedWriter(fstream2);
                Vector [] CI = new Vector[4];
                Vector [] CO = new Vector[4];
                Vector [] PS = new Vector[4];
                Vector [] MA = new Vector[4];
                for (int i=0; i<4;i++) {
                    CI[i]=new Vector();
                    CO[i]=new Vector();
                    PS[i]=new Vector();
                    MA[i]=new Vector();
                }
                int AtendidosDept;
                int AprobadosDept;
                int ReprobadosDept;
                int RetiradosDept;
                String Dept ="";
                for(int i=1; i<numRows;i++){
                    //CI, CO, PS y MA
                    
                    Row row  = sheet.getRow(i);
                    Cell Departamento = row.getCell(12);
                    if (Departamento.getStringCellValue().equals("CI")||
                        Departamento.getStringCellValue().equals("CO")||
                        Departamento.getStringCellValue().equals("PS")||
                        Departamento.getStringCellValue().equals("MA")){
                        //Esta es la parte de promedios por departamento
                        Dept.equals(Departamento.getStringCellValue());
                        Cell Asignatura = row.getCell(0);
                        Cell Seccion = row.getCell(1);
                        Cell Atendidos = row.getCell(2);
                        Cell Nota1 = row.getCell(10);
                        Cell Nota2 = row.getCell(9);
                        Cell Nota3 = row.getCell(8);
                        Cell Nota4 = row.getCell(7);
                        Cell Nota5 = row.getCell(6);
                        if (Departamento.getStringCellValue().equals("CI")) {
                            CI[0].add(new Double(Atendidos.getNumericCellValue()));
                            CI[1].add(new Double(Promedios.aprobadosMateria(Nota5, Nota4, Nota3)));
                            CI[2].add(new Double(Promedios.reprobadosMateria(Nota2, Nota1)));
                            CI[3].add(new Double(Promedios.retiradosMateria(Atendidos, Nota5, Nota4, Nota3, Nota2, Nota1)));                            
                        }
                        if (Departamento.getStringCellValue().equals("CO")) {
                            CO[0].add(new Double(Atendidos.getNumericCellValue()));
                            CO[1].add(new Double(Promedios.aprobadosMateria(Nota5, Nota4, Nota3)));
                            CO[2].add(new Double(Promedios.reprobadosMateria(Nota2, Nota1)));
                            CO[3].add(new Double(Promedios.retiradosMateria(Atendidos, Nota5, Nota4, Nota3, Nota2, Nota1)));
                        }
                        if (Departamento.getStringCellValue().equals("PS")) {
                            PS[0].add(new Double(Atendidos.getNumericCellValue()));
                            PS[1].add(new Double(Promedios.aprobadosMateria(Nota5, Nota4, Nota3)));
                            PS[2].add(new Double(Promedios.reprobadosMateria(Nota2, Nota1)));
                            PS[3].add(new Double(Promedios.retiradosMateria(Atendidos, Nota5, Nota4, Nota3, Nota2, Nota1)));
                        }
                        if (Departamento.getStringCellValue().equals("MA")) {
                            MA[0].add(new Double(Atendidos.getNumericCellValue()));
                            MA[1].add(new Double(Promedios.aprobadosMateria(Nota5, Nota4, Nota3)));
                            MA[2].add(new Double(Promedios.reprobadosMateria(Nota2, Nota1)));
                            MA[3].add(new Double(Promedios.retiradosMateria(Atendidos, Nota5, Nota4, Nota3, Nota2, Nota1)));
                            //System.out.println("Aqui hay error "+(int)MA;   
                        }
                        // Create file 
                        out.write("Asignatura: "+Asignatura.toString()+"" +
                                "\nSeccion: "+(int)Double.parseDouble(Seccion.toString())+
                                "\nAprobados: "+(int)Promedios.aprobadosMateria(Nota5, Nota4, Nota3)+"("+Promedios.truncate(Promedios.porcAprobadosMateria(Promedios.aprobadosMateria(Nota5, Nota4, Nota3), Atendidos.getNumericCellValue()))+"%) Reprobados: "+(int)Promedios.reprobadosMateria(Nota2, Nota1)+"("+Promedios.truncate(Promedios.porcReprobadosMateria(Promedios.reprobadosMateria(Nota2,Nota1), Atendidos.getNumericCellValue()))+"%) Retirados: "+(int)Promedios.retiradosMateria(Atendidos, Nota5, Nota4, Nota3, Nota2, Nota1)+"("+Promedios.truncate(Promedios.porcRetiradosMateria(Promedios.retiradosMateria(Atendidos, Nota5, Nota4, Nota3, Nota2, Nota1), Atendidos.getNumericCellValue()))+"%)\n\n");
                    }
                    
                }
                    AtendidosDept = ((int)Promedios.atendidosDepto(CI));
                    AprobadosDept = ((int)Promedios.aprobadosDepto(CI));
                    ReprobadosDept = (int)Promedios.reprobadosDepto(CI);
                    RetiradosDept = (int)Promedios.retiradosDepto(CI);
                    out2.write("\nDepartamento: CI\nAtendidos: "+(int)AtendidosDept+"\nAprobados: "+(int)Promedios.aprobadosDepto(CI)+" ("+Promedios.truncate(Promedios.porcAprobadosDepto(AprobadosDept, AtendidosDept))+")% Reprobados: "+(int)Promedios.reprobadosDepto(CI)+"("+Promedios.truncate(Promedios.porcReprobadosDepto(ReprobadosDept, AtendidosDept))+")% Retirados: "+(int)Promedios.retiradosDepto(CI)+"("+Promedios.truncate(Promedios.porcRetiradosDepto(RetiradosDept, AtendidosDept))+")%\n");
                    AtendidosDept = (int)Promedios.atendidosDepto(CO);
                    AprobadosDept = (int)Promedios.aprobadosDepto(CO);
                    ReprobadosDept = (int)Promedios.reprobadosDepto(CO);
                    RetiradosDept = (int)Promedios.retiradosDepto(CO);
                    out2.write("\nDepartamento: CO\nAtendidos: "+(int)AtendidosDept+"\nAprobados: "+(int)Promedios.aprobadosDepto(CO)+" ("+Promedios.truncate(Promedios.porcAprobadosDepto(AprobadosDept, AtendidosDept))+")% Reprobados: "+(int)Promedios.reprobadosDepto(CO)+"("+Promedios.truncate(Promedios.porcReprobadosDepto(ReprobadosDept, AtendidosDept))+")% Retirados: "+(int)Promedios.retiradosDepto(CO)+"("+Promedios.truncate(Promedios.porcRetiradosDepto(RetiradosDept, AtendidosDept))+")%\n");
                    AtendidosDept = (int)Promedios.atendidosDepto(PS);
                    AprobadosDept = (int)Promedios.aprobadosDepto(PS);
                    ReprobadosDept = (int)Promedios.reprobadosDepto(PS);
                    RetiradosDept = (int)Promedios.retiradosDepto(PS);
                    out2.write("\nDepartamento: PS\nAtendidos: "+(int)AtendidosDept+"\nAprobados: "+(int)Promedios.aprobadosDepto(PS)+" ("+Promedios.truncate(Promedios.porcAprobadosDepto(AprobadosDept, AtendidosDept))+")% Reprobados: "+(int)Promedios.reprobadosDepto(PS)+"("+Promedios.truncate(Promedios.porcReprobadosDepto(ReprobadosDept, AtendidosDept))+")% Retirados: "+(int)Promedios.retiradosDepto(PS)+"("+Promedios.truncate(Promedios.porcRetiradosDepto(RetiradosDept, AtendidosDept))+")%\n");
                    AtendidosDept = (int)Promedios.atendidosDepto(MA);
                    AprobadosDept = (int)Promedios.aprobadosDepto(MA);
                    ReprobadosDept = (int)Promedios.reprobadosDepto(MA);
                    RetiradosDept = (int)Promedios.retiradosDepto(MA);
                    out2.write("\nDepartamento: MA\nAtendidos: "+(int)AtendidosDept+"\nAprobados: "+(int)Promedios.aprobadosDepto(MA)+" ("+Promedios.truncate(Promedios.porcAprobadosDepto(AprobadosDept, AtendidosDept))+")% Reprobados: "+(int)Promedios.reprobadosDepto(MA)+"("+Promedios.truncate(Promedios.porcReprobadosDepto(ReprobadosDept, AtendidosDept))+")% Retirados: "+(int)Promedios.retiradosDepto(MA)+"("+Promedios.truncate(Promedios.porcRetiradosDepto(RetiradosDept, AtendidosDept))+")%\n");
                    out.close();
                    out2.close();
                  
        }
    }
}
